1. Field of the Invention
This invention relates to high performance computing systems, and more particularly, to maintaining efficient computer garbage collection.
2. Description of the Relevant Art
When software programmers write applications to perform work according to an algorithm or a method, the programmers utilize variables to reference temporary and result data. This data, which may be referred to as data objects, requires that space be allocated in computer memory. During execution of one or more applications, the amount of computer memory unallocated, or free, for data object allocation may decrease to a suboptimal level. This reduced amount of free space may decrease system performance and, eventually, there may not be any free space available.
Rather than place the burden on the programmer to manage memory during application development, which increases design effort and time and may lead to runtime errors, automatic memory management techniques may be utilized. Automatic memory management methods release data objects that are no longer needed during application execution. Garbage collection is a general term used to describe the different methods and algorithms utilized to reclaim allocated memory that won't be used again during application execution.
Besides ensuring there is enough memory space for applications to execute, which can remove physical memory leaks, garbage collection has other benefits. For example, garbage collection removes the burden of manual memory management, such as memory allocation and deallocation, from the software programmer, and it reduces or removes the number of certain errors, such as dangling pointer errors.
However, garbage collection is a time consuming task. A general algorithm used to perform this task is to divide the entire memory into sets, wherein each set has one or more data objects. One set may be designated as a condemned set, or a set of data objects that have been determined to be candidates for recycling, or data objects with memory locations that can be reclaimed. The algorithm may be generally described as choosing a condemned set, scanning data objects that have not been condemned, determining which data objects within the condemned set are reachable, or referenced by variables within a processor core executing an application, and reclaiming the data objects that were not reachable. Some algorithms may copy some or all of the reachable data objects into a new area of memory, updating all references to those data objects as needed. Besides requiring time to perform all of these actions, the algorithm requires cache space during its execution, which may require evicting useful information to be used once the algorithm has finished and applications may resume.
Due to being a time consuming task, an automatic garbage collector requires a system to pause while the collector performs its tasks. If the garbage collector is run in real-time, or concurrently with the execution of applications, then the length of this pause may be unacceptable for some applications. Examples of some critical applications include online stock trading, e-commerce applications, and multimedia applications such as movies and video games.
In view of the above, efficient methods and mechanisms for maintaining efficient computer garbage collection in real-time is desired.